#!/bin/bash



# 🐘 arthas 



rootDir=`dirname $(readlink -f "$0")`;headColor='\033[38;2;41;184;219m'; endColor='\033[0m'
cd $rootDir; echo cd `pwd`


# 1. 搜索pid
searchPIDName="NCCMain"

# 使用jps获取PID
PID=$(jps -l | grep $searchPIDName | awk '{print $1}')

# 检查是否找到了PID
if [ -z "$PID" ]; then
    echo "没有找到运行中的Java进程：$searchPIDName"
    return
else
    echo "Java进程 $searchPIDName 的PID是：$PID"
fi



# 2. 要检查的文件路径
arthas_boot_jar="$rootDir/arthas-boot.jar"


# 检查文件是否存在
if [ -e "$arthas_boot_jar" ]; then

    ## 2.1 判断文件是否过期
    
    # 获取文件的最后修改时间
    MODIFIED=$(stat -c "%Y" "$arthas_boot_jar")
    # 获取当前时间
    NOW=$(date +%s)
    # 设置六个月的时间戳阈值
    SIX_MONTHS=$((6 * 30 * 24 * 60 * 60))
    # 计算文件修改时间与当前时间的差值
    DIFF=$(($NOW - $MODIFIED))

    # 如果差值大于六个月的时间戳阈值，则重新下载文件
    if [ $DIFF -gt $SIX_MONTHS ]; then
      rm -rf $arthas_boot_jar

      echo "文件已超过6个月未修改，正在重新下载..."

      wget -O "arthas-boot.jar" "https://alibaba.github.io/arthas/arthas-boot.jar"

      if [ $? != 0 ]
      then 
        exit 1
      fi

    else
      echo "即将启动arthas..."
    fi
else
    echo "文件不存在: arthas-boot.jar，即将下载..."
    wget https://alibaba.github.io/arthas/arthas-boot.jar
fi



# 3. 常用实例文档
echo -e "${headColor}▶ 推荐arthas示例：https://gitee.com/mozhuanzuojing/ncc-gradle-vscode/blob/main/docs/arthas.md ${endColor}"



# 4. 启动arthas
java -jar arthas-boot.jar $PID


